home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1997 February: Technology Seed / Mac Tech Seed Feb '97.toast / OpenDoc 1.2b2c1 / Implementation / Core / Part.cpp < prev    next >
Encoding:
C/C++ Source or Header  |  1997-02-13  |  38.3 KB  |  1,124 lines  |  [TEXT/MPS ]

  1. /*
  2.     File:        Part.cpp
  3.  
  4.     Contains:    ODPart class implementation
  5.  
  6.     Owned by:    Joshua Susser
  7.  
  8.     Copyright:    © 1993 - 1996 by Apple Computer, Inc., all rights reserved.
  9.  
  10.     Change History (most recent first):
  11.  
  12.          <3>     12/9/96    EL        1609286: Don't throw on InitPartFromStorage
  13.                                     if error is has no write access.
  14.          <2>      6/6/96    jpa        T10020: Initialize ODActionData structs to
  15.                                     avoid compiler warnings.
  16.         <31>    10/13/95    TÇ        1284461 GM: Parts that are created in a
  17.                                     document should not automatically be given
  18.                                     names
  19.         <30>     10/8/95    TJ        Fixes Recomended by Refball
  20.         <29>     9/18/95    CG        1285279 GM: kODPartNotWrapper should be
  21.                                     kODErrPartNotWrapper.
  22.         <28>      9/1/95    CC        1274788: InitPartName: Initialize to
  23.                                     category.
  24.                                     1273646: Override Externalize to remove
  25.                                     lingering data interchange properties.
  26.         <27>     8/12/95    TÇ        1276807 Opt./Bug: use StdTypIO routines for
  27.                                     portable streaming & smaller footprint
  28.         <26>      8/3/95    RR        #1257260: Collapse B classes. Remove
  29.                                     somInit methods. Don't call IsInitialized
  30.                                     or SubclassResponsibility
  31.         <25>     6/26/95    VL        1262622: Added InitPartName. This ensures
  32.                                     that every part has a name property.
  33.         <24>      6/1/95    JBS        1242639 Remove #define DR2_OPTIONS 1
  34.         <23>     5/26/95    DM        1251403: Multithreading naming support.
  35.         <22>     4/26/95    CG        1211082 BB: 5$ Bugs need to be evaluated
  36.                                     and removed from Core
  37.         <21>     4/16/95    VL        1230084: Use POUtils in Init,
  38.                                     InitFromStorage and CloneInto.
  39.         <20>     4/13/95    JBS        1233726 temp DR2_OPTIONS support for parts
  40.                                     which don't implement ClonePartInfo.
  41.         <19>      4/3/95    JBS        1234218 optional protocols now return
  42.                                     errors instead of SubclassResponsibility
  43.         <18>     3/28/95    JBS        1229656 add EditInLinkAttempted; 1226398
  44.                                     add ClonePartInfo
  45.         <17>      3/7/95    CC        1224121: CreateLink() returns an
  46.                                     ODLinkSource object.
  47.         <16>     1/26/95    eeh        1213354: ODActionData now an ODByteArray.
  48.         <15>     1/22/95    NP        EmbeddedFrameSpec signature changed because
  49.                                     of change to AE types.
  50.         <14>     1/20/95    JBS        1195017, 1205669: part API changes
  51.         <13>     1/13/95    RR        1192147, 1201708 Removed implementations of
  52.                                     HandleEventInEmbedded, MouseEnter,
  53.                                     MouseWithin and MouseLeave. Moved
  54.                                     functionality to HandleEvent
  55.         <12>    12/23/94    JBS        1186869: hide ODPartWrapper from public
  56.                                     API; 1192557: ODPartWrapper realPart access
  57.         <11>    12/15/94    CC        1197221 CreateLink() takes ODByteArray
  58.                                     parameter.
  59.                                     1205684 LinkUdated parameter renamed to
  60.                                     "change" from "id".
  61.         <10>      9/1/94    CC        RADAR #1183005 - change AdjustBorderShape
  62.                                     param from Frame to Facet (for JBS)
  63.          <9>     8/26/94    VL        1183174: Removed CloneInto.
  64.          <8>     8/18/94    jpa        Fixed warnings by adding return values
  65.                                     [1181839]
  66.          <7>     8/16/94    VL        1143605: Fixed parameters to CloneInto.
  67.          <6>     8/13/94    TÇ        #1180814 Added support for ODPartWrapper
  68.                                     API
  69.          <5>      8/9/94    VL        1179857: DragEnter and DragWithin return
  70.                                     ODBoolean.
  71.          <4>      8/5/94    JBS        #1179151 Part API cleanup
  72.          <3>     7/12/94    VL        Added SubClassResponsibility.
  73.          <2>     6/28/94    CG        Synched API with a7.
  74.          <1>     6/24/94    CG        first checked in
  75.     To Do:
  76.     In Progress:
  77.         
  78. */
  79.  
  80. #define ODPart_Class_Source
  81. #include <Part.xih>
  82.  
  83. #ifndef _EXCEPT_
  84. #include "Except.h"
  85. #endif
  86.  
  87. #ifndef _POUTILS_
  88. #include <POUtils.h>
  89. #endif
  90.  
  91. #ifndef _INFOUTIL_
  92. #include "InfoUtil.h"
  93. #endif
  94.  
  95. #ifndef _STORUTIL_
  96. #include <StorUtil.h>
  97. #endif
  98.  
  99. #ifndef _STDTYPIO_
  100. #include <StdTypIO.h>
  101. #endif
  102.  
  103. #ifndef _ITEXT_
  104. #include <IText.h>
  105. #endif
  106.  
  107. #ifndef _TEMPOBJ_
  108. #include <TempObj.h>
  109. #endif
  110.  
  111. #ifndef SOM_Module_OpenDoc_StdProps_defined
  112. #include <StdProps.xh>
  113. #endif
  114.  
  115. #ifndef SOM_Module_OpenDoc_StdTypes_defined
  116. #include <StdTypes.xh>
  117. #endif
  118.  
  119. //==============================================================================
  120. // Function Prototype
  121. //==============================================================================
  122.  
  123. void InitPartName(Environment* ev, ODStorageUnit* su);
  124.  
  125. //==============================================================================
  126. // ODPart
  127. //==============================================================================
  128.  
  129. //------------------------------------------------------------------------------
  130. // ODPart: somUninit
  131. //------------------------------------------------------------------------------
  132.  
  133. SOM_Scope void SOMLINK ODPartsomUninit(ODPart *somSelf)
  134. {
  135.     /* ODPartData *somThis = ODPartGetData(somSelf); */
  136.     ODPartMethodDebug("ODPart","somUninit");
  137.  
  138.     ODPart_parent_ODPersistentObject_somUninit(somSelf);
  139. }
  140. //------------------------------------------------------------------------------
  141. // ODPart: InitPart
  142. //------------------------------------------------------------------------------
  143.  
  144. SOM_Scope void SOMLINK ODPartInitPart(ODPart *somSelf, Environment *ev,
  145.         ODStorageUnit* storageUnit, ODPart* partWrapper)
  146. {
  147.     /* ODPartData *somThis = ODPartGetData(somSelf); */
  148.     ODPartMethodDebug("ODPart","InitPart");
  149.     
  150.     SOM_TRY
  151.  
  152.     somSelf->InitPersistentObject(ev, storageUnit);
  153.     InitModificationInfo(ev, storageUnit);
  154.     InitPartName(ev, storageUnit);
  155.     
  156.     SOM_CATCH_ALL
  157.     SOM_ENDTRY
  158. }
  159.  
  160. //------------------------------------------------------------------------------
  161. // ODPart: InitPartFromStorage
  162. //------------------------------------------------------------------------------
  163.  
  164. SOM_Scope void SOMLINK ODPartInitPartFromStorage(ODPart *somSelf, Environment *ev,
  165.         ODStorageUnit* storageUnit, ODPart* partWrapper)
  166. {
  167.     /* ODPartData *somThis = ODPartGetData(somSelf); */
  168.     ODPartMethodDebug("ODPart","InitPartFromStorage");
  169.     
  170.     SOM_TRY
  171.  
  172.     somSelf->InitPersistentObjectFromStorage(ev, storageUnit);
  173.     
  174.     TRY
  175.         InitModificationInfo(ev, storageUnit);
  176.         InitPartName(ev, storageUnit);
  177.     CATCH_ALL
  178.         if ( ErrorCode() != kODErrInvalidPermissions)
  179.             RERAISE;
  180.     ENDTRY
  181.     
  182.     SOM_CATCH_ALL
  183.     SOM_ENDTRY
  184. }
  185.  
  186. //------------------------------------------------------------------------------
  187. // ODPart: CloneInto
  188. //------------------------------------------------------------------------------
  189.  
  190. SOM_Scope void SOMLINK ODPartCloneInto(ODPart *somSelf, Environment *ev,
  191.         ODDraftKey key,
  192.         ODStorageUnit* toSU,
  193.         ODFrame* scopeFrame)
  194. {
  195.     /* ODPartData *somThis = ODPartGetData(somSelf); */
  196.     ODPartMethodDebug("ODPart","CloneInto");
  197.     
  198.     SOM_TRY
  199.  
  200.     parent_CloneInto(somSelf, ev, key, toSU, scopeFrame);
  201.     CloneModificationInfo(ev, somSelf->GetStorageUnit(ev), toSU);
  202.     
  203.     SOM_CATCH_ALL
  204.     SOM_ENDTRY
  205. }
  206.  
  207. //------------------------------------------------------------------------------
  208. // ODPart: Externalize
  209. //------------------------------------------------------------------------------
  210.  
  211. SOM_Scope void     SOMLINK ODPartExternalize(ODPart *somSelf, Environment *ev)
  212. {
  213.     /* ODPartData *somThis = ODPartGetData(somSelf); */
  214.     ODPartMethodDebug("ODPart","Externalize");
  215.     
  216.     SOM_TRY
  217.  
  218.     parent_Externalize(somSelf, ev);
  219.  
  220.     // Remove data interchange properties that may have been left
  221.     // when this part was dragged to the Finder
  222.     RemoveDataInterchangeProperties(ev, somSelf->GetStorageUnit(ev), kODFalse);
  223.     
  224.     SOM_CATCH_ALL
  225.     SOM_ENDTRY
  226. }
  227.  
  228. //------------------------------------------------------------------------------
  229. // ODPart: DisplayFrameAdded
  230. //------------------------------------------------------------------------------
  231.  
  232. SOM_Scope void SOMLINK ODPartDisplayFrameAdded(ODPart *somSelf, Environment *ev,
  233.         ODFrame* frame)
  234. {
  235.     /* ODPartData *somThis = ODPartGetData(somSelf); */
  236.     ODPartMethodDebug("ODPart","DisplayFrameAdded");
  237.  
  238.     WARN("A subclass should have overridden this method!");
  239.     ODSetSOMException(ev,kODErrSubClassResponsibility, "SubClass Responsibility");
  240. }
  241.  
  242. //------------------------------------------------------------------------------
  243. // ODPart: DisplayFrameRemoved
  244. //------------------------------------------------------------------------------
  245.  
  246. SOM_Scope void SOMLINK ODPartDisplayFrameRemoved(ODPart *somSelf, Environment *ev,
  247.         ODFrame* frame)
  248. {
  249.     /* ODPartData *somThis = ODPartGetData(somSelf); */
  250.     ODPartMethodDebug("ODPart","DisplayFrameRemoved");
  251.  
  252.     WARN("A subclass should have overridden this method!");
  253.     ODSetSOMException(ev,kODErrSubClassResponsibility, "SubClass Responsibility");
  254. }
  255.  
  256. //------------------------------------------------------------------------------
  257. // ODPart: DisplayFrameConnected
  258. //------------------------------------------------------------------------------
  259.  
  260. SOM_Scope void SOMLINK ODPartDisplayFrameConnected(ODPart *somSelf, Environment *ev,
  261.         ODFrame* frame)
  262. {
  263.     /* ODPartData *somThis = ODPartGetData(somSelf); */
  264.     ODPartMethodDebug("ODPart","DisplayFrameConnected");
  265.  
  266.     WARN("A subclass should have overridden this method!");
  267.     ODSetSOMException(ev,kODErrSubClassResponsibility, "SubClass Responsibility");
  268. }
  269.  
  270. //------------------------------------------------------------------------------
  271. // ODPart: DisplayFrameClosed
  272. //------------------------------------------------------------------------------
  273.  
  274. SOM_Scope void SOMLINK ODPartDisplayFrameClosed(ODPart *somSelf, Environment *ev,
  275.         ODFrame* frame)
  276. {
  277.     /* ODPartData *somThis = ODPartGetData(somSelf); */
  278.     ODPartMethodDebug("ODPart","DisplayFrameClosed");
  279.  
  280.     WARN("A subclass should have overridden this method!");
  281.     ODSetSOMException(ev,kODErrSubClassResponsibility, "SubClass Responsibility");
  282. }
  283.  
  284. //------------------------------------------------------------------------------
  285. // ODPart: AttachSourceFrame
  286. //------------------------------------------------------------------------------
  287.  
  288. SOM_Scope void SOMLINK ODPartAttachSourceFrame(ODPart *somSelf, Environment *ev,
  289.         ODFrame* frame,
  290.         ODFrame* sourceFrame)
  291. {
  292.     /* ODPartData *somThis = ODPartGetData(somSelf); */
  293.     ODPartMethodDebug("ODPart","AttachSourceFrame");
  294.  
  295.     WARN("A subclass should have overridden this method!");
  296.     ODSetSOMException(ev,kODErrSubClassResponsibility, "SubClass Responsibility");
  297. }
  298.  
  299. //------------------------------------------------------------------------------
  300. // ODPart: FrameShapeChanged
  301. //------------------------------------------------------------------------------
  302.  
  303. SOM_Scope void SOMLINK ODPartFrameShapeChanged(ODPart *somSelf, Environment *ev,
  304.         ODFrame* frame)
  305. {
  306.     /* ODPartData *somThis = ODPartGetData(somSelf); */
  307.     ODPartMethodDebug("ODPart","FrameShapeChanged");
  308.  
  309.     WARN("A subclass should have overridden this method!");
  310.     ODSetSOMException(ev,kODErrSubClassResponsibility, "SubClass Responsibility");
  311. }
  312.  
  313. //------------------------------------------------------------------------------
  314. // ODPart: ViewTypeChanged
  315. //------------------------------------------------------------------------------
  316.  
  317. SOM_Scope void SOMLINK ODPartViewTypeChanged(ODPart *somSelf, Environment *ev,
  318.         ODFrame* frame)
  319. {
  320.     /* ODPartData *somThis = ODPartGetData(somSelf); */
  321.     ODPartMethodDebug("ODPart","ViewTypeChanged");
  322.  
  323.     WARN("A subclass should have overridden this method!");
  324.     ODSetSOMException(ev,kODErrSubClassResponsibility, "SubClass Responsibility");
  325. }
  326.  
  327. //------------------------------------------------------------------------------
  328. // ODPart: PresentationChanged
  329. //------------------------------------------------------------------------------
  330.  
  331. SOM_Scope void SOMLINK ODPartPresentationChanged(ODPart *somSelf, Environment *ev,
  332.         ODFrame* frame)
  333. {
  334.     /* ODPartData *somThis = ODPartGetData(somSelf); */
  335.     ODPartMethodDebug("ODPart","PresentationChanged");
  336.  
  337.     WARN("A subclass should have overridden this method!");
  338.     ODSetSOMException(ev,kODErrSubClassResponsibility, "SubClass Responsibility");
  339. }
  340.  
  341. //------------------------------------------------------------------------------
  342. // ODPart: SequenceChanged
  343. //------------------------------------------------------------------------------
  344.  
  345. SOM_Scope void SOMLINK ODPartSequenceChanged(ODPart *somSelf, Environment *ev,
  346.         ODFrame* frame)
  347. {
  348.     /* ODPartData *somThis = ODPartGetData(somSelf); */
  349.     ODPartMethodDebug("ODPart","SequenceChanged");
  350.  
  351.     WARN("A subclass should have overridden this method!");
  352.     ODSetSOMException(ev,kODErrSubClassResponsibility, "SubClass Responsibility");
  353. }
  354.  
  355. //------------------------------------------------------------------------------
  356. // ODPart: LinkStatusChanged
  357. //------------------------------------------------------------------------------
  358.  
  359. SOM_Scope void SOMLINK ODPartLinkStatusChanged(ODPart *somSelf, Environment *ev,
  360.         ODFrame* frame)
  361. {
  362.     /* ODPartData *somThis = ODPartGetData(somSelf); */
  363.     ODPartMethodDebug("ODPart","LinkStatusChanged");
  364.  
  365.     WARN("A subclass should have overridden this method!");
  366.     ODSetSOMException(ev,kODErrSubClassResponsibility, "SubClass Responsibility");
  367. }
  368.  
  369. //------------------------------------------------------------------------------
  370. // ODPart: ContainingPartPropertiesUpdated
  371. //------------------------------------------------------------------------------
  372.  
  373. SOM_Scope void SOMLINK ODPartContainingPartPropertiesUpdated(ODPart *somSelf, Environment *ev,
  374.         ODFrame* frame,
  375.         ODStorageUnit* propertyUnit)
  376. {
  377.     /* ODPartData *somThis = ODPartGetData(somSelf); */
  378.     ODPartMethodDebug("ODPart","ContainingPartPropertiesUpdated");
  379.  
  380.     WARN("A subclass should have overridden this method!");
  381.     ODSetSOMException(ev,kODErrSubClassResponsibility, "SubClass Responsibility");
  382. }
  383.  
  384. //------------------------------------------------------------------------------
  385. // ODPart: ReadPartInfo
  386. //------------------------------------------------------------------------------
  387.  
  388. SOM_Scope ODInfoType SOMLINK ODPartReadPartInfo(ODPart *somSelf, Environment *ev,
  389.         ODFrame* frame,
  390.         ODStorageUnitView* storageUnitView)
  391. {
  392.     /* ODPartData *somThis = ODPartGetData(somSelf); */
  393.     ODPartMethodDebug("ODPart","ReadPartInfo");
  394.  
  395.     WARN("A subclass should have overridden this method!");
  396.     ODSetSOMException(ev,kODErrSubClassResponsibility, "SubClass Responsibility");
  397.     return kODNULL;
  398. }
  399.  
  400. //------------------------------------------------------------------------------
  401. // ODPart: WritePartInfo
  402. //------------------------------------------------------------------------------
  403.  
  404. SOM_Scope void SOMLINK ODPartWritePartInfo(ODPart *somSelf, Environment *ev,
  405.         ODInfoType partInfo,
  406.         ODStorageUnitView* storageUnitView)
  407. {
  408.     /* ODPartData *somThis = ODPartGetData(somSelf); */
  409.     ODPartMethodDebug("ODPart","WritePartInfo");
  410.  
  411.     WARN("A subclass should have overridden this method!");
  412.     ODSetSOMException(ev,kODErrSubClassResponsibility, "SubClass Responsibility");
  413. }
  414.  
  415. //------------------------------------------------------------------------------
  416. // ODPart: ClonePartInfo
  417. //------------------------------------------------------------------------------
  418.  
  419. SOM_Scope void SOMLINK ODPartClonePartInfo(ODPart *somSelf, Environment *ev,
  420.         ODDraftKey key,
  421.         ODInfoType partInfo,
  422.         ODStorageUnitView* storageUnitView,
  423.         ODFrame* scopeFrame)
  424. {
  425.     /* ODPartData *somThis = ODPartGetData(somSelf); */
  426.     ODPartMethodDebug("ODPart","ClonePartInfo");
  427.  
  428.     WARN("A subclass should have overridden this method!");
  429.     ODSetSOMException(ev,kODErrSubClassResponsibility, "SubClass Responsibility");
  430. }
  431.  
  432. //------------------------------------------------------------------------------
  433. // ODPart: Open
  434. //------------------------------------------------------------------------------
  435.  
  436. SOM_Scope ODID SOMLINK ODPartOpen(ODPart *somSelf, Environment *ev,
  437.         ODFrame* frame)
  438. {
  439.     /* ODPartData *somThis = ODPartGetData(somSelf); */
  440.     ODPartMethodDebug("ODPart","Open");
  441.  
  442.     WARN("A subclass should have overridden this method!");
  443.     ODSetSOMException(ev,kODErrSubClassResponsibility, "SubClass Responsibility");
  444.     return 0;
  445. }
  446.  
  447. //------------------------------------------------------------------------------
  448. // ODPart: Draw
  449. //------------------------------------------------------------------------------
  450.  
  451. SOM_Scope void SOMLINK ODPartDraw(ODPart *somSelf, Environment *ev,
  452.         ODFacet* facet,
  453.         ODShape* invalidShape)
  454. {
  455.     /* ODPartData *somThis = ODPartGetData(somSelf); */
  456.     ODPartMethodDebug("ODPart","Draw");
  457.  
  458.     WARN("A subclass should have overridden this method!");
  459.     ODSetSOMException(ev,kODErrSubClassResponsibility, "SubClass Responsibility");
  460. }
  461.  
  462. //------------------------------------------------------------------------------
  463. // ODPart: FacetAdded
  464. //------------------------------------------------------------------------------
  465.  
  466. SOM_Scope void SOMLINK ODPartFacetAdded(ODPart *somSelf, Environment *ev,
  467.         ODFacet* facet)
  468. {
  469.     /* ODPartData *somThis = ODPartGetData(somSelf); */
  470.     ODPartMethodDebug("ODPart","FacetAdded");
  471.  
  472.     WARN("A subclass should have overridden this method!");
  473.     ODSetSOMException(ev,kODErrSubClassResponsibility, "SubClass Responsibility");
  474. }
  475.  
  476. //------------------------------------------------------------------------------
  477. // ODPart: FacetRemoved
  478. //------------------------------------------------------------------------------
  479.  
  480. SOM_Scope void SOMLINK ODPartFacetRemoved(ODPart *somSelf, Environment *ev,
  481.         ODFacet* facet)
  482. {
  483.     /* ODPartData *somThis = ODPartGetData(somSelf); */
  484.     ODPartMethodDebug("ODPart","FacetRemoved");
  485.  
  486.     WARN("A subclass should have overridden this method!");
  487.     ODSetSOMException(ev,kODErrSubClassResponsibility, "SubClass Responsibility");
  488. }
  489.  
  490. //------------------------------------------------------------------------------
  491. // ODPart: GeometryChanged
  492. //------------------------------------------------------------------------------
  493.  
  494. SOM_Scope void SOMLINK ODPartGeometryChanged(ODPart *somSelf, Environment *ev,
  495.         ODFacet* facet, ODBoolean clipShapeChanged, ODBoolean externalTransformChanged)
  496. {
  497.     /* ODPartData *somThis = ODPartGetData(somSelf); */
  498.     ODPartMethodDebug("ODPart","GeometryChanged");
  499.  
  500.     WARN("A subclass should have overridden this method!");
  501.     ODSetSOMException(ev,kODErrSubClassResponsibility, "SubClass Responsibility");
  502. }
  503.  
  504. //------------------------------------------------------------------------------
  505. // ODPart: HighlightChanged
  506. //------------------------------------------------------------------------------
  507.  
  508. SOM_Scope void SOMLINK ODPartHighlightChanged(ODPart *somSelf, Environment *ev,
  509.         ODFacet* facet)
  510. {
  511.     /* ODPartData *somThis = ODPartGetData(somSelf); */
  512.     ODPartMethodDebug("ODPart","HighlightChanged");
  513.  
  514.     WARN("A subclass should have overridden this method!");
  515.     ODSetSOMException(ev,kODErrSubClassResponsibility, "SubClass Responsibility");
  516. }
  517.  
  518. //------------------------------------------------------------------------------
  519. // ODPart: CanvasChanged
  520. //------------------------------------------------------------------------------
  521.  
  522. SOM_Scope void SOMLINK ODPartCanvasChanged(ODPart *somSelf, Environment *ev,
  523.         ODFacet* facet)
  524. {
  525.     /* ODPartData *somThis = ODPartGetData(somSelf); */
  526.     ODPartMethodDebug("ODPart","CanvasChanged");
  527.  
  528.     WARN("A subclass should have overridden this method!");
  529.     ODSetSOMException(ev,kODErrSubClassResponsibility, "SubClass Responsibility");
  530. }
  531.  
  532. //------------------------------------------------------------------------------
  533. // ODPart: CanvasUpdated
  534. //------------------------------------------------------------------------------
  535.  
  536. SOM_Scope void SOMLINK ODPartCanvasUpdated(ODPart *somSelf, Environment *ev,
  537.         ODCanvas* canvas)
  538. {
  539.     /* ODPartData *somThis = ODPartGetData(somSelf); */
  540.     ODPartMethodDebug("ODPart","CanvasUpdated");
  541.  
  542.     WARN("A subclass should have overridden this method!");
  543.     ODSetSOMException(ev,kODErrSubClassResponsibility, "SubClass Responsibility");
  544. }
  545.  
  546. //------------------------------------------------------------------------------
  547. // ODPart: GetPrintResolution
  548. //------------------------------------------------------------------------------
  549.  
  550. SOM_Scope ODULong SOMLINK ODPartGetPrintResolution(ODPart *somSelf, Environment *ev,
  551.         ODFrame* frame)
  552. {
  553.     /* ODPartData *somThis = ODPartGetData(somSelf); */
  554.     ODPartMethodDebug("ODPart","GetPrintResolution");
  555.  
  556.     WARN("A subclass should have overridden this method!");
  557.     ODSetSOMException(ev,kODErrSubClassResponsibility, "SubClass Responsibility");
  558.     return 0;
  559. }
  560.  
  561. //------------------------------------------------------------------------------
  562. // ODPart: BeginRelinquishFocus
  563. //------------------------------------------------------------------------------
  564.  
  565. SOM_Scope ODBoolean SOMLINK ODPartBeginRelinquishFocus(ODPart *somSelf, Environment *ev,
  566.         ODTypeToken focus,
  567.         ODFrame* ownerFrame,
  568.         ODFrame* proposedFrame)
  569. {
  570.     /* ODPartData *somThis = ODPartGetData(somSelf); */
  571.     ODPartMethodDebug("ODPart","BeginRelinquishFocus");
  572.  
  573.     WARN("A subclass should have overridden this method!");
  574.     ODSetSOMException(ev,kODErrSubClassResponsibility, "SubClass Responsibility");
  575.     return kODFalse;
  576. }
  577.  
  578. //------------------------------------------------------------------------------
  579. // ODPart: CommitRelinquishFocus
  580. //------------------------------------------------------------------------------
  581.  
  582. SOM_Scope void SOMLINK ODPartCommitRelinquishFocus(ODPart *somSelf, Environment *ev,
  583.         ODTypeToken focus,
  584.         ODFrame* ownerFrame,
  585.         ODFrame* proposedFrame)
  586. {
  587.     /* ODPartData *somThis = ODPartGetData(somSelf); */
  588.     ODPartMethodDebug("ODPart","CommitRelinquishFocus");
  589.  
  590.     WARN("A subclass should have overridden this method!");
  591.     ODSetSOMException(ev,kODErrSubClassResponsibility, "SubClass Responsibility");
  592. }
  593.  
  594. //------------------------------------------------------------------------------
  595. // ODPart: AbortRelinquishFocus
  596. //------------------------------------------------------------------------------
  597.  
  598. SOM_Scope void SOMLINK ODPartAbortRelinquishFocus(ODPart *somSelf, Environment *ev,
  599.         ODTypeToken focus,
  600.         ODFrame* ownerFrame,
  601.         ODFrame* proposedFrame)
  602. {
  603.     /* ODPartData *somThis = ODPartGetData(somSelf); */
  604.     ODPartMethodDebug("ODPart","AbortRelinquishFocus");
  605.  
  606.     WARN("A subclass should have overridden this method!");
  607.     ODSetSOMException(ev,kODErrSubClassResponsibility, "SubClass Responsibility");
  608. }
  609.  
  610. //------------------------------------------------------------------------------
  611. // ODPart: FocusAcquired
  612. //------------------------------------------------------------------------------
  613.  
  614. SOM_Scope void SOMLINK ODPartFocusAcquired(ODPart *somSelf, Environment *ev,
  615.         ODTypeToken focus,
  616.         ODFrame* ownerFrame)
  617. {
  618.     /* ODPartData *somThis = ODPartGetData(somSelf); */
  619.     ODPartMethodDebug("ODPart","FocusAcquired");
  620.  
  621.     WARN("A subclass should have overridden this method!");
  622.     ODSetSOMException(ev,kODErrSubClassResponsibility, "SubClass Responsibility");
  623. }
  624.  
  625.  
  626. //------------------------------------------------------------------------------
  627. // ODPart: FocusLost
  628. //------------------------------------------------------------------------------
  629.  
  630. SOM_Scope void SOMLINK ODPartFocusLost(ODPart *somSelf, Environment *ev,
  631.         ODTypeToken focus,
  632.         ODFrame* ownerFrame)
  633. {
  634.     /* ODPartData *somThis = ODPartGetData(somSelf); */
  635.     ODPartMethodDebug("ODPart","FocusLost");
  636.  
  637.     WARN("A subclass should have overridden this method!");
  638.     ODSetSOMException(ev,kODErrSubClassResponsibility, "SubClass Responsibility");
  639. }
  640.  
  641.  
  642. //------------------------------------------------------------------------------
  643. // ODPart: ExternalizeKinds
  644. //------------------------------------------------------------------------------
  645.  
  646. SOM_Scope void SOMLINK ODPartExternalizeKinds(ODPart *somSelf, Environment *ev,
  647.         ODTypeList* kindset)
  648. {
  649.     /* ODPartData *somThis = ODPartGetData(somSelf); */
  650.     ODPartMethodDebug("ODPart","ExternalizeKinds");
  651.  
  652.     WARN("A subclass should have overridden this method!");
  653.     ODSetSOMException(ev,kODErrSubClassResponsibility, "SubClass Responsibility");
  654. }
  655.  
  656.  
  657. //------------------------------------------------------------------------------
  658. // ODPart: ChangeKind
  659. //------------------------------------------------------------------------------
  660.  
  661. SOM_Scope void SOMLINK ODPartChangeKind(ODPart *somSelf, Environment *ev,
  662.         ODType kind)
  663. {
  664.     /* ODPartData *somThis = ODPartGetData(somSelf); */
  665.     ODPartMethodDebug("ODPart","ChangeKind");
  666.  
  667.     WARN("A subclass should have overridden this method!");
  668.     ODSetSOMException(ev,kODErrSubClassResponsibility, "SubClass Responsibility");
  669. }
  670.  
  671. //------------------------------------------------------------------------------
  672. // ODPart: HandleEvent
  673. //------------------------------------------------------------------------------
  674.  
  675. SOM_Scope ODBoolean SOMLINK ODPartHandleEvent(ODPart *somSelf, Environment *ev,
  676.         ODEventData* event,
  677.         ODFrame* frame,
  678.         ODFacet* facet,
  679.         ODEventInfo* eventInfo)
  680. {
  681.     /* ODPartData *somThis = ODPartGetData(somSelf); */
  682.     ODPartMethodDebug("ODPart","HandleEvent");
  683.  
  684.     WARN("A subclass should have overridden this method!");
  685.     ODSetSOMException(ev,kODErrSubClassResponsibility, "SubClass Responsibility");
  686.     return kODFalse;
  687. }
  688.  
  689. //------------------------------------------------------------------------------
  690. // ODPart: AdjustMenus
  691. //------------------------------------------------------------------------------
  692.  
  693. SOM_Scope void SOMLINK ODPartAdjustMenus(ODPart *somSelf, Environment *ev,
  694.         ODFrame* frame)
  695. {
  696.     /* ODPartData *somThis = ODPartGetData(somSelf); */
  697.     ODPartMethodDebug("ODPart","AdjustMenus");
  698.  
  699.     WARN("A subclass should have overridden this method!");
  700.     ODSetSOMException(ev,kODErrSubClassResponsibility, "SubClass Responsibility");
  701. }
  702.  
  703. //------------------------------------------------------------------------------
  704. // ODPart: UndoAction
  705. //------------------------------------------------------------------------------
  706.  
  707. SOM_Scope void SOMLINK ODPartUndoAction(ODPart *somSelf, Environment *ev,
  708.         ODActionData* actionState)
  709. {
  710.     /* ODPartData *somThis = ODPartGetData(somSelf); */
  711.     ODPartMethodDebug("ODPart","UndoAction");
  712.  
  713.     ODSetSOMException(ev, kODErrDoesNotUndo);
  714. }
  715.  
  716. //------------------------------------------------------------------------------
  717. // ODPart: RedoAction
  718. //------------------------------------------------------------------------------
  719.  
  720. SOM_Scope void SOMLINK ODPartRedoAction(ODPart *somSelf, Environment *ev,
  721.         ODActionData* actionState)
  722. {
  723.     /* ODPartData *somThis = ODPartGetData(somSelf); */
  724.     ODPartMethodDebug("ODPart","RedoAction");
  725.  
  726.     ODSetSOMException(ev, kODErrDoesNotUndo);
  727. }
  728.  
  729. //------------------------------------------------------------------------------
  730. // ODPart: DisposeActionState
  731. //------------------------------------------------------------------------------
  732.  
  733. SOM_Scope void SOMLINK ODPartDisposeActionState(ODPart *somSelf, Environment *ev,
  734.         ODActionData* actionState,
  735.         ODDoneState doneState)
  736. {
  737.     /* ODPartData *somThis = ODPartGetData(somSelf); */
  738.     ODPartMethodDebug("ODPart","DisposeActionState");
  739.  
  740.     ODSetSOMException(ev, kODErrDoesNotUndo);
  741. }
  742.  
  743. //------------------------------------------------------------------------------
  744. // ODPart: WriteActionState
  745. //------------------------------------------------------------------------------
  746.  
  747. SOM_Scope void SOMLINK ODPartWriteActionState(ODPart *somSelf, Environment *ev,
  748.         ODActionData* actionState,
  749.         ODStorageUnitView* storageUnitView)
  750. {
  751.     /* ODPartData *somThis = ODPartGetData(somSelf); */
  752.     ODPartMethodDebug("ODPart","WriteActionState");
  753.  
  754.     ODSetSOMException(ev, kODErrDoesNotUndo);
  755. }
  756.  
  757. //------------------------------------------------------------------------------
  758. // ODPart: ReadActionState
  759. //------------------------------------------------------------------------------
  760.  
  761. SOM_Scope ODActionData SOMLINK ODPartReadActionState(ODPart *somSelf, Environment *ev,
  762.         ODStorageUnitView* storageUnitView)
  763. {
  764.     /* ODPartData *somThis = ODPartGetData(somSelf); */
  765.     ODPartMethodDebug("ODPart","ReadActionState");
  766.  
  767.     ODSetSOMException(ev, kODErrDoesNotUndo);
  768.     ODActionData data = {0,0,kODNULL};
  769.     return data;
  770. }
  771.  
  772. //------------------------------------------------------------------------------
  773. // ODPart: FulfillPromise
  774. //------------------------------------------------------------------------------
  775.  
  776. SOM_Scope void  SOMLINK ODPartFulfillPromise(ODPart *somSelf, Environment *ev,
  777.         ODStorageUnitView* promiseSUView)
  778. {
  779.     /* ODPartData *somThis = ODPartGetData(somSelf); */
  780.     ODPartMethodDebug("ODPart","FulfillPromise");
  781.  
  782.     ODSetSOMException(ev, kODErrNoPromises);
  783. }
  784.  
  785. //------------------------------------------------------------------------------
  786. // ODPart: DropCompleted
  787. //------------------------------------------------------------------------------
  788.  
  789. SOM_Scope void  SOMLINK ODPartDropCompleted(ODPart *somSelf, Environment *ev,
  790.         ODPart* destPart,
  791.         ODDropResult dropResult)
  792. {
  793.     /* ODPartData *somThis = ODPartGetData(somSelf); */
  794.     ODPartMethodDebug("ODPart","DropCompleted");
  795.  
  796.     ODSetSOMException(ev, kODErrDoesNotDrop);
  797. }
  798.  
  799.  
  800. //------------------------------------------------------------------------------
  801. // ODPart: DragEnter
  802. //------------------------------------------------------------------------------
  803.  
  804. SOM_Scope ODDragResult  SOMLINK ODPartDragEnter(ODPart *somSelf, Environment *ev,
  805.         ODDragItemIterator* dragInfo,
  806.         ODFacet* facet,
  807.         ODPoint* where)
  808. {
  809.     /* ODPartData *somThis = ODPartGetData(somSelf); */
  810.     ODPartMethodDebug("ODPart","DragEnter");
  811.  
  812.     ODSetSOMException(ev, kODErrDoesNotDrop);
  813.     return kODFalse;
  814. }
  815.  
  816.  
  817. //------------------------------------------------------------------------------
  818. // ODPart: DragWithin
  819. //------------------------------------------------------------------------------
  820.  
  821. SOM_Scope ODDragResult  SOMLINK ODPartDragWithin(ODPart *somSelf, Environment *ev,
  822.         ODDragItemIterator* dragInfo,
  823.         ODFacet* facet,
  824.         ODPoint* where)
  825. {
  826.     /* ODPartData *somThis = ODPartGetData(somSelf); */
  827.     ODPartMethodDebug("ODPart","DragWithin");
  828.  
  829.     ODSetSOMException(ev, kODErrDoesNotDrop);
  830.     return kODFalse;
  831. }
  832.  
  833. //------------------------------------------------------------------------------
  834. // ODPart: DragLeave
  835. //------------------------------------------------------------------------------
  836.  
  837. SOM_Scope void SOMLINK ODPartDragLeave(ODPart *somSelf, Environment *ev,
  838.         ODFacet* facet,
  839.         ODPoint* where)
  840. {
  841.     /* ODPartData *somThis = ODPartGetData(somSelf); */
  842.     ODPartMethodDebug("ODPart","DragLeave");
  843.  
  844.     ODSetSOMException(ev, kODErrDoesNotDrop);
  845. }
  846.  
  847. //------------------------------------------------------------------------------
  848. // ODPart: Drop
  849. //------------------------------------------------------------------------------
  850.  
  851. SOM_Scope ODDropResult SOMLINK ODPartDrop(ODPart *somSelf, Environment *ev,
  852.         ODDragItemIterator* dropInfo,
  853.         ODFacet* facet,
  854.         ODPoint* where)
  855. {
  856.     /* ODPartData *somThis = ODPartGetData(somSelf); */
  857.     ODPartMethodDebug("ODPart","Drop");
  858.  
  859.     ODSetSOMException(ev, kODErrDoesNotDrop);
  860.     return kODDropFail;
  861. }
  862.  
  863. //------------------------------------------------------------------------------
  864. // ODPart: CreateLink
  865. //------------------------------------------------------------------------------
  866.  
  867. SOM_Scope ODLinkSource* SOMLINK ODPartCreateLink(ODPart *somSelf, Environment *ev,
  868.         ODByteArray* data)
  869. {
  870.     /* ODPartData *somThis = ODPartGetData(somSelf); */
  871.     ODPartMethodDebug("ODPart","CreateLink");
  872.  
  873.     ODSetSOMException(ev, kODErrDoesNotLink);
  874.     return kODNULL;
  875. }
  876.  
  877. //------------------------------------------------------------------------------
  878. // ODPart: RevealLink
  879. //------------------------------------------------------------------------------
  880.  
  881. SOM_Scope void SOMLINK ODPartRevealLink(ODPart *somSelf, Environment *ev,
  882.         ODLinkSource* linkSource)
  883. {
  884.     /* ODPartData *somThis = ODPartGetData(somSelf); */
  885.     ODPartMethodDebug("ODPart","RevealLink");
  886.  
  887.     ODSetSOMException(ev, kODErrDoesNotLink);
  888. }
  889.  
  890. //------------------------------------------------------------------------------
  891. // ODPart: LinkUpdated
  892. //------------------------------------------------------------------------------
  893.  
  894. SOM_Scope void SOMLINK ODPartLinkUpdated(ODPart *somSelf, Environment *ev,
  895.         ODLink* updatedLink,
  896.         ODUpdateID change)
  897. {
  898.     /* ODPartData *somThis = ODPartGetData(somSelf); */
  899.     ODPartMethodDebug("ODPart","LinkUpdated");
  900.  
  901.     ODSetSOMException(ev, kODErrDoesNotLink);
  902. }
  903.  
  904. //------------------------------------------------------------------------------
  905. // ODPart: EmbeddedFrameUpdated
  906. //------------------------------------------------------------------------------
  907.  
  908. SOM_Scope void SOMLINK ODPartEmbeddedFrameUpdated(ODPart *somSelf, Environment *ev,
  909.         ODFrame* frame,
  910.         ODUpdateID change)
  911. {
  912.     /* ODPartData *somThis = ODPartGetData(somSelf); */
  913.     ODPartMethodDebug("ODPart","EmbeddedFrameUpdated");
  914.  
  915.     // The default behavior for this method is to do nothing.  The reason
  916.     // is that a part which does not support linking may be embedded within
  917.     // a part which publishes a link source, and then itself embed a part which
  918.     // calls ODFrame::ContentUpdated.  This part will be notified that the
  919.     // EmbeddedFrameUpdated, and the correct thing to do is nothing.  Only
  920.     // parts which want to do something special in response to this notification
  921.     // need to override this method.
  922. }
  923.  
  924. //------------------------------------------------------------------------------
  925. // ODPart: EditInLinkAttempted
  926. //------------------------------------------------------------------------------
  927.  
  928. SOM_Scope ODBoolean SOMLINK ODPartEditInLinkAttempted(ODPart *somSelf, Environment *ev,
  929.         ODFrame* frame)
  930. {
  931.     /* ODPartData *somThis = ODPartGetData(somSelf); */
  932.     ODPartMethodDebug("ODPart","EditInLinkAttempted");
  933.  
  934.     ODSetSOMException(ev, kODErrDoesNotLink);
  935.     return kODFalse;
  936. }
  937.  
  938. //------------------------------------------------------------------------------
  939. // ODPart: RequestEmbeddedFrame
  940. //------------------------------------------------------------------------------
  941.  
  942. SOM_Scope ODFrame* SOMLINK ODPartRequestEmbeddedFrame(ODPart *somSelf, Environment *ev,
  943.         ODFrame* containingFrame,
  944.         ODFrame* baseFrame,
  945.         ODShape* frameShape,
  946.         ODPart* embedPart,
  947.         ODTypeToken viewType,
  948.         ODTypeToken presentation,
  949.         ODBoolean isOverlaid)
  950. {
  951.     /* ODPartData *somThis = ODPartGetData(somSelf); */
  952.     ODPartMethodDebug("ODPart","RequestEmbeddedFrame");
  953.  
  954.     ODSetSOMException(ev, kODErrCannotEmbed);
  955.     return kODNULL;
  956. }
  957.  
  958. //------------------------------------------------------------------------------
  959. // ODPart: RemoveEmbeddedFrame
  960. //------------------------------------------------------------------------------
  961.  
  962. SOM_Scope void SOMLINK ODPartRemoveEmbeddedFrame(ODPart *somSelf, Environment *ev,
  963.         ODFrame* embeddedFrame)
  964. {
  965.     /* ODPartData *somThis = ODPartGetData(somSelf); */
  966.     ODPartMethodDebug("ODPart","RemoveEmbeddedFrame");
  967.  
  968.     ODSetSOMException(ev, kODErrCannotEmbed);
  969. }
  970.  
  971. //------------------------------------------------------------------------------
  972. // ODPart: RequestFrameShape
  973. //------------------------------------------------------------------------------
  974.  
  975. SOM_Scope ODShape* SOMLINK ODPartRequestFrameShape(ODPart *somSelf, Environment *ev,
  976.         ODFrame* embeddedFrame,
  977.         ODShape* frameShape)
  978. {
  979.     /* ODPartData *somThis = ODPartGetData(somSelf); */
  980.     ODPartMethodDebug("ODPart","RequestFrameShape");
  981.  
  982.     ODSetSOMException(ev, kODErrCannotEmbed);
  983.     return kODNULL;
  984. }
  985.  
  986. //------------------------------------------------------------------------------
  987. // ODPart: UsedShapeChanged
  988. //------------------------------------------------------------------------------
  989.  
  990. SOM_Scope void SOMLINK ODPartUsedShapeChanged(ODPart *somSelf, Environment *ev,
  991.         ODFrame* embeddedFrame)
  992. {
  993.     /* ODPartData *somThis = ODPartGetData(somSelf); */
  994.     ODPartMethodDebug("ODPart","UsedShapeChanged");
  995.  
  996.     ODSetSOMException(ev, kODErrCannotEmbed);
  997. }
  998.  
  999.  
  1000. //------------------------------------------------------------------------------
  1001. // ODPart: AdjustBorderShape
  1002. //------------------------------------------------------------------------------
  1003.  
  1004. SOM_Scope ODShape* SOMLINK ODPartAdjustBorderShape(ODPart *somSelf, Environment *ev,
  1005.         ODFacet* embeddedFacet,
  1006.         ODShape* shape)
  1007. {
  1008.     /* ODPartData *somThis = ODPartGetData(somSelf); */
  1009.     ODPartMethodDebug("ODPart","AdjustBorderShape");
  1010.  
  1011.     ODSetSOMException(ev, kODErrCannotEmbed);
  1012.     return kODNULL;
  1013. }
  1014.  
  1015. //------------------------------------------------------------------------------
  1016. // ODPart: AcquireContainingPartProperties
  1017. //------------------------------------------------------------------------------
  1018.  
  1019. SOM_Scope ODStorageUnit* SOMLINK ODPartAcquireContainingPartProperties(ODPart *somSelf, Environment *ev,
  1020.         ODFrame* frame)
  1021. {
  1022.     /* ODPartData *somThis = ODPartGetData(somSelf); */
  1023.     ODPartMethodDebug("ODPart","AcquireContainingPartProperties");
  1024.  
  1025.     ODSetSOMException(ev, kODErrCannotEmbed);
  1026.     return kODNULL;
  1027. }
  1028.  
  1029. //------------------------------------------------------------------------------
  1030. // ODPart: RevealFrame
  1031. //------------------------------------------------------------------------------
  1032.  
  1033. SOM_Scope ODBoolean SOMLINK ODPartRevealFrame(ODPart *somSelf, Environment *ev,
  1034.         ODFrame* embeddedFrame,
  1035.         ODShape* revealShape)
  1036. {
  1037.     /* ODPartData *somThis = ODPartGetData(somSelf); */
  1038.     ODPartMethodDebug("ODPart","RevealFrame");
  1039.  
  1040.     ODSetSOMException(ev, kODErrCannotEmbed);
  1041.     return kODFalse;
  1042. }
  1043.  
  1044. //------------------------------------------------------------------------------
  1045. // ODPart: EmbeddedFrameSpec
  1046. //------------------------------------------------------------------------------
  1047.  
  1048. SOM_Scope void SOMLINK ODPartEmbeddedFrameSpec(ODPart *somSelf, Environment *ev,
  1049.         ODFrame* embeddedFrame,
  1050.         ODObjectSpec* spec)
  1051. {
  1052.     /* ODPartData *somThis = ODPartGetData(somSelf); */
  1053.     ODPartMethodDebug("ODPart","EmbeddedFrameSpec");
  1054.  
  1055.     ODSetSOMException(ev, kODErrCannotEmbed);
  1056. }
  1057.  
  1058.  
  1059. //------------------------------------------------------------------------------
  1060. // ODPart: CreateEmbeddedFramesIterator
  1061. //------------------------------------------------------------------------------
  1062.  
  1063. SOM_Scope ODEmbeddedFramesIterator* SOMLINK ODPartCreateEmbeddedFramesIterator(ODPart *somSelf, Environment *ev,
  1064.         ODFrame* frame)
  1065. {
  1066.     /* ODPartData *somThis = ODPartGetData(somSelf); */
  1067.     ODPartMethodDebug("ODPart","CreateEmbeddedFramesIterator");
  1068.  
  1069.     ODSetSOMException(ev, kODErrCannotEmbed);
  1070.     return kODNULL;
  1071. }
  1072.  
  1073. //------------------------------------------------------------------------------
  1074. // ODPart: IsRealPart
  1075. //------------------------------------------------------------------------------
  1076.  
  1077. SOM_Scope ODBoolean SOMLINK ODPartIsRealPart(ODPart *somSelf, Environment *ev)
  1078. {
  1079.     /* ODPartData *somThis = ODPartGetData(somSelf); */
  1080.     ODPartMethodDebug("ODPart","IsRealPart");
  1081.  
  1082.     // actuall implementation, no need to override
  1083.     return kODTrue;
  1084. }
  1085.  
  1086. //------------------------------------------------------------------------------
  1087. // ODPart: GetRealPart
  1088. //------------------------------------------------------------------------------
  1089.  
  1090. SOM_Scope ODPart* SOMLINK ODPartGetRealPart(ODPart *somSelf, Environment *ev)
  1091. {
  1092.     /* ODPartData *somThis = ODPartGetData(somSelf); */
  1093.     ODPartMethodDebug("ODPart","GetRealPart");
  1094.  
  1095.     // actuall implementation, no need to override
  1096.     ODSetSOMException(ev, kODErrPartNotWrapper);
  1097.     return kODNULL;
  1098. }
  1099.  
  1100. //------------------------------------------------------------------------------
  1101. // ODPart: ReleaseRealPart
  1102. //------------------------------------------------------------------------------
  1103.  
  1104. SOM_Scope void SOMLINK ODPartReleaseRealPart(ODPart *somSelf, Environment *ev)
  1105. {
  1106.     /* ODPartData *somThis = ODPartGetData(somSelf); */
  1107.     ODPartMethodDebug("ODPart","ReleaseRealPart");
  1108.  
  1109.     // actuall implementation, no need to override
  1110.     ODSetSOMException(ev, kODErrPartNotWrapper);
  1111. }
  1112.  
  1113. //------------------------------------------------------------------------------
  1114. // InitPartName
  1115. //------------------------------------------------------------------------------
  1116.  
  1117. void InitPartName(Environment* ev, ODStorageUnit* su)
  1118. {
  1119.     if ( su->Exists(ev, kODPropName, kODNULL, 0) == kODFalse )
  1120.     {
  1121.         TempODIText itext = CreateIText(0);
  1122.         ODSetITextProp(ev, su, kODPropName, kODMacIText, itext);
  1123.     }
  1124. }